package cn.cj.erp.service.base;

import java.util.List;
import java.util.stream.Collectors;

/**
 * service层 entity、bo互转接口
 *
 * @author jianchen
 */
public interface ServiceConverter<Entity, Bo> {
    /**
     * Bo对象 -> Entity对象
     * @param bo Bo对象
     * @return Entity对象
     */
    Entity convert2Entity(Bo bo);

    /**
     * Entity对象 -> Bo对象
     * @param entity Entity对象
     * @return Bo对象
     */
    Bo convert2Bo(Entity entity);

    /**
     * Entity列表 -> Bo列表
     * @param list Entity列表
     * @return Bo列表
     */
    default List<Bo> convert2BoList(List<Entity> list) {
        if (list == null) {
            return null;
        }
        return list.stream().map(this::convert2Bo).collect(Collectors.toList());
    }

    /**
     * Bo列表 -> Entity列表
     * @param list Bo列表
     * @return Entity列表
     */
    default List<Entity> convert2EntityList(List<Bo> list) {
        if (list == null) {
            return null;
        }
        return list.stream().map(this::convert2Entity).collect(Collectors.toList());
    }
}